/**
 * 交叉类型
 * 交叉类型是将多个类型合并为一个类型
 */
interface Person11 {
    handsome: string
}
interface Person21 {
    high: string
}
type P1P2 = Person11 & Person21;
let p22: P1P2 = { handsome: "帅", high: "高" }
// 举例：我们提供两拨人，一拨人都很帅、另一拨人很高。我们希望找到他们的交叉部分 => 又高又帅的人

// 交叉类型
function mixin<T, K>(a: T, b: K): T & K {
    return {...a, ...b};
}
const x = mixin({ name: "dada" }, { age: 11 })

interface IPerson1 {
    name: string,
    age: number
}
interface IPerson2 {
    name: number,
    age: number
}
type person23 = IPerson1 & IPerson2;
let name12!: never;
let person123: person23 = { name: name12, age: 11 };

